package com.daniel.juc.lock8;

import java.util.concurrent.TimeUnit;

/**
 * 8锁，关于锁的8个问题
 * 7、一个静态的同步方法，一个普通的同步方法，一个对象，先打印发短信还是打电话？打电话
 * 8、一个静态的同步方法，一个普通的同步方法，两个对象，先打印发短信还是打电话？打电话
 *
 * @author Daniel
 * @version V1.0
 * @date 2020/5/18 15:00
 */
public class Test04 {

	public static void main(String[] args) {
		// Phone4 phone1 = new Phone4();
		Phone4 phone2 = new Phone4();
		new Thread(() -> {
			Phone4.send();
		}, "A").start();

		try {
			TimeUnit.SECONDS.sleep(1);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

		new Thread(() -> {
			phone2.call();
		}, "B").start();
	}
}


class Phone4 {

	// 静态同步方法，锁的是Class类模板

	public static synchronized void send() {
		// 增加休眠4秒
		try {
			TimeUnit.SECONDS.sleep(4);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}

		System.out.println("发短信");
	}

	// 普通的同步方法，锁的是调用者

	public synchronized void call() {
		System.out.println("打电话");
	}

}
